﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace ApplicationTemplate
{
    class CreateDamClass
    {
        private static DataSet FieldsDs = null;

        private static String realTableName = String.Empty;
        public static String CreateDAMTemplate(String spaceName, String className, String DAMClassName, String modeClassName, String tableName, DataSet ds)
        {
            String[] tbInfo = tableName.Split('_');
            String getRealTable = "";

            realTableName = tableName;
            getRealTable = String.Format(@"{0} = ""{0}"";", realTableName);


            FieldsDs = ds;
            tableName = ApplcationTemplate.GetTableName(tableName); ;

            String model = String.Format(@"using System;
using System.Text;
using System.Data;
using System.Data.Common;
using Sics.Framework.Consts;
using Sics.Framework.Core;
using Sics.Framework.Dam;
using Sics.Framework.Filter;

namespace {0}
{{
    public partial class {1} : BaseSQLServerDAM
    {{
        private string {3};

        /// <summary>
        /// コンストラクタ
        /// </summary>
        public {1}()
        {{
            {9}
            this.CreateDataBase(CmnConsts.MAIN_DB_CONNECTION);
        }}
        
        /// <summary>
        /// 追加処理
        /// </summary>
        /// <param name=""model"">データモデル</param>
        /// <param name=""dbManager"">データベースマネージャ</param>
        /// <returns>処理結果</returns>
        {4}
        
        /// <summary>
        /// 更新処理
        /// </summary>
        /// <param name=""model"">データモデル</param>
        /// <param name=""dbManager"">データベースマネージャ</param>
        /// <returns>処理結果</returns>
        {5}
        
        /// <summary>
        /// 削除処理
        /// </summary>
        /// <param name=""model"">データモデル</param>
        /// <param name=""dbManager"">データベースマネージャ</param>
        /// <returns>処理結果</returns>
        {6}
        
        /// <summary>
        /// 詳細情報を取得する
        /// </summary>
        /// <param name=""model"">データモデル</param>
        /// <param name=""dbManager"">データベースマネージャ</param>
        /// <returns>データセット</returns>
        {7}
        
        /// <summary>
        /// レコードステータスを更新する
        /// </summary>
        /// <param name=""model"">データモデル</param>
        /// <param name=""dbManager"">データベースマネージャ</param>
        /// <returns>処理結果</returns>
        {8}

        /// <summary>
        /// 詳細情報を取得する
        /// </summary>
        /// <param name=""dbManager"">データベースマネージャ</param>
        /// <returns>データセット</returns>
        {10}
    }}
}}", spaceName, className, DAMClassName, realTableName,
                CreateDamInsertAPI.CreateInsert(realTableName, modeClassName, FieldsDs),
                CreateDamUpdateAPI.CreateUpdate(realTableName, modeClassName, FieldsDs),
                CreateDamDeleteAPI.CreateDelete(realTableName, modeClassName, FieldsDs),
                CreateDamSelectAPI.CreateSelect(realTableName, modeClassName, FieldsDs),
                CreateDamUpdateStatusAPI.CreateUpdateStatus(realTableName, modeClassName, FieldsDs),
                getRealTable,
                CreateDamSelectAPI.CreateGetAll(realTableName, modeClassName, FieldsDs)

             );

            return model;
        }
    }
}
